//p1621
#include<bits/stdc++.h>
using namespace std;
int pri[100001];
int check[100001];
int main(){
    int a,b,p;
    cin>>a>>b>>p;
    pri[0]=1;
    pri[1]=1;//这两个注意特判
    for(int i=2;i<=100001;i++){//循环记得从 2 开始
        for(int j=i;j<=100001/i;j++){
            pri[i*j]=1;
        }
    }//筛素数
    int ans=0,sum=0;
    //ans为元素个数大于等于 2 的集合个数
    //sum为ans个集合中所有点的个数
    for(int i=p;i<=b;i++){//开始寻找
        if(pri[i]) continue;
        int t;
        if(a%i==0) t=a;
        else t=i*(a/i+1);//定义每一次扫描的端点
        int wyxak=0,tyqak=0;//这两个用来处理特殊情况
        //WYXkk AK IOI! Light_Tracing AK IOI!
        for(int j=t;j<=b;j+=i){//扫描此区间
            if(!check[j]){
                check[j]=1;
                wyxak=1;
                sum++;//找到后处理
            } 
            else tyqak=1;//没有数就将此判断变量改为 true
        }
        if(wyxak==1&&tyqak==0) ans++;//扫完若是此状况 ans 便可以加 1 了
    }
    cout<<ans+(b-a-sum+1);//b-a-sum+1 表示单个集合个数
    return 0;
}
